package com.foftact.cave.mapper;

import com.foftact.cave.Cave;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 持仓与跟踪指数Mapper接口
 * 用于操作cave表
 */
@Mapper
public interface CaveMapper {
    /**
     * 插入单条持仓数据
     * @param cave 持仓数据对象
     * @return 插入的行数
     */
    int insert(Cave cave);

    /**
     * 根据代码更新持仓数据
     * @param cave 持仓数据对象
     * @return 更新的行数
     */
    int updateByCode(Cave cave);

    /**
     * 根据ID删除持仓数据
     * @param id 主键ID
     * @return 删除的行数
     */
    int deleteById(Long id);

    /**
     * 根据代码删除持仓数据
     * @param code 持仓代码
     * @return 删除的行数
     */
    int deleteByCode(String code);

    /**
     * 根据ID查询持仓数据
     * @param id 主键ID
     * @return 持仓数据对象
     */
    Cave selectById(Long id);

    /**
     * 根据代码查询持仓数据
     * @param code 持仓代码
     * @return 持仓数据对象
     */
    Cave selectByCode(String code);

    /**
     * 根据跟踪指数代码查询持仓数据列表
     * @param refcode 跟踪指数代码
     * @return 持仓数据列表
     */
    List<Cave> selectByRefcode(String refcode);

    /**
     * 查询所有持仓数据
     * @return 持仓数据列表
     */
    List<Cave> selectAll();

    /**
     * 根据关键字搜索持仓数据
     * @param keyword 搜索关键字（支持代码或名称模糊匹配）
     * @return 持仓数据列表
     */
    List<Cave> searchByKeyword(@Param("keyword") String keyword);
}